001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Dec 4, 2002
005 * Time: 8:51:17 PM
006 */
007
008 package EVolve.visualization.XYViz.ValValViz;
009
010 import EVolve.visualization.*;
011 import EVolve.visualization.Dimension;
012 import EVolve.data.Element;
013 import EVolve.Scene;
014
015 import javax.swing.*;
016 import java.awt.event.*;
017 import java.awt.*;
018
019 public class MetricViz extends ValueValueVisualization{
020 private JMenuItem itemSelectTimeFrame;
021 private JTextField textIntervalX, textIntervalY;
022 private int intervalY;
023
024 public MetricViz() {
025 super();
026 interval = 1;
027 intervalY = 1000000;
028 }
029
030 public Dimension[] createDimension() {
031 Dimension[] returnVal = new Dimension[2];
032 xAxis = new ValueDimension();
033 yAxis = new ValueDimension();
034
035 returnVal[0] = xAxis;
036 returnVal[1] = yAxis;
037
038 return returnVal;
039 }
040
041 public JMenuItem[] createSelectionMenuItem() {
042 itemSelectTimeFrame = new JCheckBoxMenuItem("Time Frame");
043 itemSelectTimeFrame.setMnemonic(KeyEvent.VK_T);
044 itemSelectTimeFrame.setSelected(true);
045 itemSelectTimeFrame.setEnabled(false);
046
047
048 JMenuItem[] items = new JMenuItem[1];
049 items[0] = itemSelectTimeFrame;
050
051 return items;
052 }
053
054 protected JPanel createConfigurationPanel() {
055 JPanel configurationPanel = new JPanel(new GridLayout(2, 1, 5, 5));
056
057 JPanel panelIntervalX = new JPanel(new FlowLayout());
058 panelIntervalX.add(new JLabel("Interval X: "));
059
060 textIntervalX = new JTextField(String.valueOf(interval), 10);
061 panelIntervalX.add(textIntervalX);
062
063 JPanel panelIntervalY = new JPanel(new FlowLayout());
064 panelIntervalY.add(new JLabel("Interval Y: "));
065
066 textIntervalY = new JTextField(String.valueOf(intervalY), 10);
067 panelIntervalY.add(textIntervalY);
068
069 configurationPanel.add(panelIntervalX);
070 configurationPanel.add(panelIntervalY);
071
072 return configurationPanel;
073 }
074
075 protected void updateConfiguration() {
076 try {
077 if (autoInterval != -1) {
078 interval = autoInterval;
079 autoInterval = -1;
080 } else {
081 interval = Integer.parseInt(textIntervalX.getText());
082 intervalY = Integer.parseInt(textIntervalY.getText());
083 }
084
085 super.updateConfiguration();
086 canvas.setName("Bytecode", "Miss rate");
087 } catch (NumberFormatException e) {
088 Scene.showErrorMessage("Interval must be an integer");
089 configure();
090 }
091 }
092
093
094 public void preVisualize() {
095 super.preVisualize();
096 image = new AutoImage();
097 installPainter();
098 }
099
100 public void receiveElement(Element element) {
101 if (element.isOptional()) return;
102
103 long x = xAxis.getField(element);
104 long y = yAxis.getField(element);
105
106 if (xOffset == -1) xOffset = x;
107
108 painter.paint(image,(x-xOffset)/interval,y/intervalY,0);
109 }
110
111 public void visualize() {
112 sort();
113 }
114
115 public void mouseMove(int x, int y) {
116
117 }
118
119 public void makeSelection() { // nothing to be selected in this viz
120 }
121
122 public Object clone() {
123 MetricViz o = (MetricViz)super.clone();
124 o.dimension[0] = o.xAxis;
125 o.dimension[1] = o.yAxis;
126
127 return o;
128 }
129 }